package controllers.updateControllers;

import javax.swing.JFrame;

import controllers.uiControllers.MainViewController;
import views.BookingZoekVluchtView;
import views.createViews.ToevoegenVluchtView;
import core.logic.services.searchServices.ZoekGegVoorBookingService;
import core.logic.services.updateServices.UpdateVluchtService;
import core.models.dataModels.ResultVluchtenVoorBooking;
import core.models.dataModels.createModels.ToevoegenVluchtModel;
import core.models.dataModels.searchModels.ZoekGegVoorBookingModel;

public class UpdateVluchtController {
	private static JFrame detailScherm;
	private static JFrame zoekScherm;
	
	public static void showViewSearch() {
		// Het model ophalen uit de service
		ZoekGegVoorBookingModel model = ZoekGegVoorBookingService.getZoekGegVoorBookingModel();
		
		// Zet de schermmodus op 'UPDATE'
		model.setSchermModus("UPDATE");
		
		// Het model naar het scherm sturen
		zoekScherm = new BookingZoekVluchtView(model);
		
		MainViewController.showView(zoekScherm);
	}
	
	public static void showViewDetail(int vluchtId) {
		// Het model eerst ophalen uit de service.
		ToevoegenVluchtModel model = UpdateVluchtService.getVluchtModel(vluchtId);
		
		// Zet de schermmodus op 'UPDATE'
		model.setSchermModus("UPDATE");
		
		// Het model naar de view sturen.
		detailScherm = new ToevoegenVluchtView(model);
		
		MainViewController.showView(detailScherm);
	}
	
	public static void handleViewSearch(ZoekGegVoorBookingModel model) {
		ResultVluchtenVoorBooking result = ZoekGegVoorBookingService.getResultVluchtenVoorBooking(model);	
		
		((BookingZoekVluchtView) zoekScherm).set_resultModel(result);
	}
	
	public static void handleViewNext(int vluchtId) {
		showViewDetail(vluchtId);
	}
	
	public static void handleViewDetail(ToevoegenVluchtModel model) {
		// Het model doorsturen naar de service
		UpdateVluchtService.updateVlucht(model);
		
		closeViewDetail();
	}
	
	public static void closeViewDetail() {
		// sluiten van het scherm
		detailScherm.dispose();
		
		UpdateVluchtController.showViewSearch();
	}
}
